/**
 *  Copyright 2009 Henning Teek, Ingo Renner
 *  
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *  
 *  http://www.apache.org/licenses/LICENSE-2.0
 *  
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License. 
 */
package com.googlecode.chigscommons.web;

import com.googlecode.chigscommons.web.util.PropertyUtils;
import com.googlecode.chigscommons.web.util.PropertyUtils.MergeMode;

import java.util.Properties;

/**
 * @author Ingo Renner
 * @author Henning Teek
 */
public class ApplicationProperties {

	private final Properties properties;

	public ApplicationProperties() {
		// load base properties
		String baseProperties = "com/googlecode/chigscommons/web/application.properties";
		Properties base = PropertyUtils.loadFromClassPath(baseProperties, false);

		// load user-specific property overrides
		String username = System.getProperty("user.name");
		String userProperties = "com/googlecode/chigscommons/web/application." + username + ".properties";
		Properties user = PropertyUtils.loadFromClassPath(userProperties, false);

		// load system properties
		Properties system = System.getProperties();

		// merge properties
		properties = PropertyUtils.merge(MergeMode.OVERRIDE_ONLY, base, user, system);
	}

	/**
	 * @return jcr default workspace
	 */
	public String getJcrDefaultWorkspace() {
		return properties.getProperty("jcr.defaultWorkspace");
	}

	/**
	 * @return http port the server is using
	 */
	public int getHttpPort() {
		return Integer.parseInt(properties.getProperty("httpPort"));
	}

	/**
	 * @return https port the server is using
	 */
	public int getHttpsPort() {
		return Integer.parseInt(properties.getProperty("httpsPort"));
	}

	public String getWorkspaceDefaultState() {
		return properties.getProperty("jcr.defaultWorkspaceState");
	}
}
